package java6699.lesson09;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.file.Paths;
import java.util.Scanner;

/**
 * @program: java_zzx
 * @description:
 * @author: zzx
 * @create: 2022-10-31 19:42
 * （1）提示用户从键盘输入文件名
 * （2）提示用户逐行输入要保存到文件中的文本，直到输入end结束
 * （3）最后输出本次写入到文件的字节数
 **/
public class WriteFile6699 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入文件名：");
        String name = sc.nextLine().trim();
        if (name.isEmpty()) {
            System.out.println("输入的文件名不能为空！");
            return;
        }
        long len = write6699(name);
        if (len != -1){
            System.out.println(String.format("已向文件%s中写入%d字节", Paths.get(name).toAbsolutePath(), len));
        }else {System.out.println("写入错误！");}

    }
    public static long write6699(String name){
        Scanner sc = new Scanner(System.in);
        //步骤1：确定输出的文件
        File file = new File(name);
        //判断子目录是否存在
        File parent = file.getParentFile();
        //判断是否是文件夹
        if (parent !=null && !parent.exists()) {
            if (!parent.mkdirs()) {
                System.out.println("文件创建失败！");
                return -1;
            }
        }
        //步骤2：创建值箱文件的字符流
        long len = -1;
        FileWriter fw = null;
        try {
            fw = new FileWriter(file);
            System.out.println("请逐行输入要写入的文件的内容，知道输入end结束：");
            String date;
            while (!"end".equalsIgnoreCase(date = sc.nextLine())){
                //步骤3：写入数据
                fw.write(date + "\n");
            }
        } catch (IOException e) {
            return -1;
        }finally {
            //步骤4：关闭
            if (fw != null) {
                try {
                    fw.close();
                    len = file.length();
                } catch (IOException e) {
                    return -1;
                }
            }
        }
        return len;
    }
}
